package vload

import "reflect"

// Pair 定义字段映射对，用于指定源字段和目标字段
type Pair struct {
	SourceField string       // 源字段名（用于获取值的字段）
	TargetField string       // 目标字段名（用于填充值的字段）
	SourceType  reflect.Kind // 源字段类型
	TargetType  reflect.Kind // 目标字段类型
	Group       string       // 分组标识，相同分组的字段会一起处理
}

// Getter 泛型值获取器
type Getter[K comparable, V any] func([]K) (map[K]V, error)

// Loader 值加载器
type Loader struct {
	pairs   map[string][]Pair      // 按分组存储字段映射对
	getters map[string]interface{} // 每个分组的值获取器
}

// New 创建新的值加载器
func New() *Loader {
	return &Loader{
		pairs:   make(map[string][]Pair),
		getters: make(map[string]interface{}),
	}
}
